package ar.com.seminario.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import ar.com.seminario.common.domain.entity.Identifiable;

/**
 * Detalla una entrevista de ingreso.
 * 
 * @author Pablo Lamas
 * 
 */
@Entity
@Table(name = "entrevista")
public class Entrevista implements Identifiable<Long> {

	/**
	 * Identificador de la entidad.
	 */
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id", nullable = false)
	private Long id;

	/**
	 * La referencia al candidato que participo de la entrevista.
	 */
	@ManyToOne
	@JoinColumn(name = "candidato_id", nullable = false)
	private Candidato candidato;

	/**
	 * Solicitud de ingreso a la que pertenece.
	 */
	@ManyToOne
	@JoinColumn(name = "solicitud_ingreso_id", nullable = true)
	private SolicitudIngreso solicitudIngreso;

	/**
	 * Entrevista de RRHH.
	 */
	@OneToOne
	@JoinColumn(name = "entrevista_rrhh_id", nullable = true)
	private EntrevistaRRHH entrevistaRRHH;
	
	/**
	 * Entrevista de Tecnica.
	 */
	@OneToOne
	@JoinColumn(name = "entrevista_tecnica_id", nullable = true)
	private EntrevistaTecnica entrevistaTecnica;
	
	/**
	 * Entrevista de Superior.
	 */
	@OneToOne
	@JoinColumn(name = "entrevista_superior_id", nullable = true)
	private EntrevistaSuperior entrevistaSuperior;
	
	/**
	 * Constructor por defecto.
	 */
	public Entrevista() {

	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Candidato getCandidato() {
		return candidato;
	}

	public void setCandidato(Candidato candidato) {
		this.candidato = candidato;
	}

	public SolicitudIngreso getSolicitudIngreso() {
		return solicitudIngreso;
	}

	protected void setSolicitudIngreso(SolicitudIngreso solicitudIngreso) {
		this.solicitudIngreso = solicitudIngreso;
	}

	public EntrevistaRRHH getEntrevistaRRHH() {
		return entrevistaRRHH;
	}

	public void setEntrevistaRRHH(EntrevistaRRHH entrevistaRRHH) {
		this.entrevistaRRHH = entrevistaRRHH;
	}

	public EntrevistaTecnica getEntrevistaTecnica() {
		return entrevistaTecnica;
	}

	public void setEntrevistaTecnica(EntrevistaTecnica entrevistaTecnica) {
		this.entrevistaTecnica = entrevistaTecnica;
	}

	public EntrevistaSuperior getEntrevistaSuperior() {
		return entrevistaSuperior;
	}

	public void setEntrevistaSuperior(EntrevistaSuperior entrevistaSuperior) {
		this.entrevistaSuperior = entrevistaSuperior;
	}

}
